5005
9117
Minulla on taulukon tilastonimi nimellä
omena
X
banaani
Y
Kiivi
z
Minun täytyy laittaa omena, banaani ja kiivi hedelmäryhmään ja X, Y ja Z aakkosiksi kutsuttuun ryhmään.
Onko mitään yksinkertaista C # -mekanismia sille? 
Käytä IEnumerable  -kohtaa. Jos ylikuormitus aiheuttaa indeksin.
var hedelmät = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var aakkoset = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Varastettu kohdasta Kuinka saada vaihtoehtoisia elementtejä numerolla C #
var hedelmät = myArray.Where ((t, i) => i% 2 == 0). ToArray ();
var aakkoset = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Jos olen ymmärtänyt, että kysyt oikein, mitä haluat, on hyvin yksinkertaista:
Haluat laittaa hedelmät hedelmäryhmään ja samoja aakkosille, ja ne näkyvät vaihtoehtoisesti taulukon tilastossa:
for (int i = 0, j = 0; i  luettelo = uusi Lista  () {"omena", "X", "banaani", "Y", "Kiwi", "z"};
var result = list.Valitse ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Valitse (x => x.Valitse (v => v.l) .ToList ())
.Listata();
Sitten sinulla on luettelo luetteloista:
|
luettelo  hedelmät = uusi Luettelo  ();
luettelo  aakkoset = uusi Luettelo  ();
for (int i = 0; i  everyOther  (IEnumerable  -kokoelma)
{
käyttäen (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
tuotto tuotto e.Virta;
e.MoveNext (); // ohita yksi
}
}
}
Voit ohittaa ensimmäisen elementin System.Linq.Skip-sovelluksella.
merkkijono [] sanat = "apple X banana Y Kiwi z" .Split ();
var hedelmät = jokainen muu (sanat);
var aakkoset = jokainen muu (sanat.Ohita (1));
Käytä niitä vain uutena kokoelmana tai puheluna .ToArray () tai .ToList () heille:
foreach (merkkijono f hedelmissä)
Console.WriteLine (f);
merkkijono [] anArray = hedelmät.ToArray (); // käyttäen System.Linq
Nyt sinulla on mitä tarvitset.
Iteraattorit ovat menetelmiä, jotka tuottavat tuottoa, katso Iterators (C # Programming Guide). Tämä on erittäin vahva piirre kielelle. Sinä pystyt:
ohita elementit
koristele elementtejä
muuta tilausta
ketjuta sekvenssit (katso System.Linq.Concat)
...
|
Tässä on joitain toimivia koodeja, toivottavasti tästä on sinulle hyötyä:
käyttämällä järjestelmää;
käyttämällä System.Collections.Generic;
käyttämällä System.IO: ta;
käyttäen System.Linq;
käyttämällä System.Text;
käyttämällä System.Threading.Tasksia;
nimitila ReadFile
{
luokan ohjelma
{
static void ReadFile (merkkijono filePath, Lista  asiakastunnukset, Lista  puhelinnumerot)
{
merkkijono = merkkijono.Tyhjä;
var fileStream = uusi StreamReader (filePath);
bool isPhoneNumber = tosi;
while ((rivi = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Muunna.ToInt32 (rivi));
isPhoneNumber = väärä;
}
muu
{
custumerNames.Add (rivi);
isPhoneNumber = tosi;
}
}
fileStream.Close ();
}
staattinen void Main (merkkijono [] args)
{
Console.WriteLine ("Aloitti tiedoston lukemisen ...");
Lista  custumersNamesList = uusi Lista  ();
Lista  custumersPhonesNumbers = uusi Lista  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Olettaen, että molemmilla luetteloilla on sama pituus.
for (int i = 0; i